package com.aboo.dao;

import java.util.List;

import com.aboo.po.BasePO;
import com.aboo.po.Page;

/**
 * @author Yata Aboo
 * @Date 2012-9-20
 * @Desc 基础Dao接口类，底层Dao类需要继承本接口类
 * @param <T> 待操作的PO类型
 */
public interface BaseDao <T extends BasePO> {

	/**
	 * 保存方法
	 * @param po 持久化对象
	 * @throws Exception 异常信息
	 */
	public Integer save(T po) throws Exception;
	
	/**
	 * 删除方法
	 * @param id 主键值
	 * @throws Exception 异常信息
	 */
	public void delete(Integer id) throws Exception;
	
	/**
	 * 查找当个对象
	 * @param po 持久化对象
	 * @return 持久化对象
	 * @throws Exception 异常信息
	 */
	public T find(T po) throws Exception;
	
	/**
	 * 查找对象总数
	 * @param po 持久化对象
	 * @return 对象总数
	 * @throws Exception 异常信息
	 */
	public Integer findCount(T po) throws Exception;
	
	/**
	 * 根据分页条件，查询对象列表
	 * @param po 持久化对象
	 * @param page
	 * @return 持久化对象列表
	 * @throws Exception 异常信息
	 */
	public List<T> findList(T po, Page page) throws Exception;
	
	/**
	 * 更新对象
	 * @param po 持久化对象
	 * @throws Exception 异常信息
	 */
	public void update(T po) throws Exception;
	
}
